package java19_3_22_reflect.rawtype;

/**
 * @author yuisama
 * @date 2022/03/22 19:50
 **/
public class Test {
    public static void main(String[] args) {
        IMessage<String> msg1 = new MessageImpl1<>();
        msg1.printMsg("123");
        IMessage<Integer> msg2 = new MessageImpl2();
        msg2.printMsg(123);
    }
}
// 泛型接口，带一个类型参数
interface IMessage<T> {
    void printMsg(T t);
}
// 子类实现接口时，就有两种选择，要么继续保留泛型，是一个泛型类，要么就在实现的时候规定类型参数
class MessageImpl1<T> implements IMessage<T> {
    @Override
    public void printMsg(T t) {
        System.out.println(t);
        System.out.println("仍然是泛型类");
    }
}
// 就是一个普通类，实现接口的时候规定好参数的类型就是Integer类型
class MessageImpl2 implements IMessage<Integer> {
    @Override
    public void printMsg(Integer t) {
        System.out.println(t);
        System.out.println("类型为Integer的普通类");
    }
}